package com.charging.business.jin;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;

/**
 * @author JerryLu
 * @date 2024/11/8 15:58
 * @description 山西车辆特情在线计费请求实体
 */
@Data
public class JinOnLineRequest {
    /**
     * 通行介质编号
     * CPC：必填16位CPC介质编号；
     * OBU：16位OBU号；
     * 纸券：01+纸券标识(不超过20位)
     * 无介质通行：030
     */
    @JSONField(ordinal = 0)
    public String mediaId;

    /**
     * 出口收费站hex|出口收费站编号
     * 示例：0e010b02|S0030140030020
     * 必填：是
     */
    @JSONField(ordinal = 1)
    public String exStationId = "";

    /**
     * 出口时间
     * 格式：yyyy-MM-ddTHH:mm:ss
     * 必填：是
     */
    public String exTime;

    /**
     * 出口实际车牌
     * 格式为： 车牌号_车牌颜色
     * 必填：是
     */
    public String vehicleId;

    /**
     * 出口收费车型
     * 必填：是
     */
    public Integer vehicleType;

    /**
     * 车种
     * 必填：否，默认为0
     * 0-普通
     * 8-军警
     * 10-紧急
     * 14-车队(35号公告已定义)
     * 21-绿通
     * 22-联合收割
     * 23-抢险救灾
     * 24-Jl集装箱
     * 25-大件运输；
     * 26-应急车
     * 27-货车列车或半挂汽车列车
     * 28- J2集装箱
     */
    public Integer vehicleClass;

    /**
     * 支付类型
     * 必填：是
     * 1-现金
     * 2-其他第三方账户支付
     * 3-银联卡支付
     * 4-ETC 用户卡
     * 6-支付宝
     * 7-微信
     */
    public Integer payType;

    /**
     * 通行标识 ID
     * 跨省计费时：当介质类型为OBU和CPC卡时必填
     * 规则：
     * 车辆通行唯一编号：
     * （1）00+0000+OBU 合同序列号+OBU 内入口时间
     * （2）01+卡网络编号+用户卡号+卡内 入口时间
     * （3）02+0000+CPC 卡编码+入口时间
     * （4）无通行介质时：030+出口时间
     * （5）04+0000+纸卷编号（14 位）+出口时间
     */
    public String passId;

    /**
     * 入口收费站hex|入口收费站编码，单省通行时（IsMultiProv=0）必须以字母14开头
     * FeeType=1,4,6时必填。
     */
    public String enStationId;

    /**
     * 计费类型
     * 1、OBU拆卸车辆（确定入口）
     * 2、无入口信息计费（不确定入口）
     * 3、无卡、坏卡（不确定入口）
     * 4、出入口信息不符(车牌不符,车型车种（确定入口）)
     * 5、OBU或ETC卡损坏(不确定入口)
     * 6、ETC转现（确定入口）
     * 7、缺失计费信息（不确定入口）
     */
    public Integer FeeType;

    /**
     * 货车轴数
     * 大于等于 2
     * 必填：货车必填
     */
    public Integer axleCount;

    /** 货车总重 */
    public Integer totalWeight;

    /** 核定载重 */
    public Integer verifyWeight;

    /**
     * 入口时间
     * 格式：yyyy-MM-ddTHH:mm:ss
     * FeeType=1,4,6时必填
     */
    public String enTime;

    /**
     * 二次确认
     * 0：表示需要请求查询入口信息 ，默认
     * 1:表示本次请求是二次确认最终确认的请求
     * 必填：是
     */
    public Integer secondConfirm;

    /**
     * 通行介质为OBU时，根据业务规则是否折扣
     * 1-折扣
     * 0或2-不折扣
     * 该参数保留原有名称，此处为了兼容部级接口参数 isDiscount
     * 必填：是
     */
    public Integer isETC;

    /**
     * 通行介质类型
     * 必填：是
     * 1-OBU
     * 2-CPC 卡
     * 3-纸券
     * 9-无通行介质
     */
    public Integer mediaType;

    /**
     * 入口站编号
     * FeeType=1,4,6时必填
     */
    public String enTollLaneId;

    /**
     * 出口站编号
     * 必填：是
     */
    public String exTollLaneId = "";

    /**
     * ETC卡DF01下0002内容
     * 通行介质为OBU时填写
     * 必填：否
     */
    public String ETCCARD0002;

    /**
     * ETC卡DF01下0015内容
     * 通行介质为 OBU 时填写
     * 必填：否
     */
    public String ETCCARD0015;

    /**
     * ETC卡DF01下0019内容
     * 通行介质为 OBU 时填写
     * 必填：否
     */
    public String ETCCARD0019;

    /**
     * CPC卡MF下EF01内容
     * 通行介质为CPC时填写
     * 必填：否
     */
    public String CPCMFEF01;

    /**
     * CPC卡MF下EF02内容
     * 通行介质为 CPC时填写
     * 必填：否
     */
    public String CPCMFEF02;

    /**
     * CPC卡DF01下EF01内容
     * 通行介质为 CPC 时填写
     * 必填：否
     */
    public String CPCEF01;

    /**
     * CPC卡DF01下EF02内容
     * 通行介质为 CPC 时填写
     * 必填：否
     */
    public String CPCEF02;

    /**
     * CPC卡DF01下EF04内容
     * 通行介质为 CPC 时填写
     * 必填：否
     */
    public String CPCEF04;

    /**
     * 是否多省
     * 0：单省(本省)  1：多省通行(跨省)
     * 必填：是
     */
    public Integer IsMultiProv;

    /**
     * 车辆用户类型
     * CPU卡 0015文件或双片式标签 EF04文件或单片式标签 EF01文件
     * 必填：否， 默认为0
     * 0-普通车
     * 6-公务车
     * 8-军警车
     * 10-紧急车
     * 12-免费
     * 14-车队
     * 24-Jl集装箱
     * 26-应急车
     * 27-货车列车或半挂汽车列车
     * 28-J2 集装箱
     */
    public Integer vehicleUserType;

    /**
     * 发行服务机构Id
     * 必填：否
     */
    public String issuerId;

    /**
     * 门架hex编码
     * 必填：否
     */
    public String turnGantryHEX;

    /**
     * 20位ETC卡编号
     * 注意：不能为空字符串
     * 必填：否
     * 当介质类型为OBU时尽量填写20位ETC卡号，获取不到可以不填。
     */
    public String cardId;

    /**
     * 介质计费应收金额
     * 单位： 分
     * 必填：否
     */
    public Long payFee;

    /**
     * 介质计费实收金额
     * 单位： 分
     * 必填：否
     */
    public Long fee;

    /**
     * 介质计费优惠金额
     * 单位： 分
     * 必填：否
     */
    public Long discountFee;

    /**
     * 发起计费请求的版本 yyyyMMdd
     * 必填：否
     * 省中心未收到此参数时默认 按null处理。此参数作为在线计费在车道发起时的日期时间，用于每次在线计费升级前后车道系统的版本区分
     */
    public Long reqVersion;

    /**
     * 车辆状态标识
     * 注意：为十六进制小写字符串，必须有"0x"前缀
     * 必填：是，默认为"0xff"
     * 0x00 - 本次通行用于大件运输；
     * 0x01 - 非优惠车辆；
     * 0x02 - 绿通车辆；
     * 0x03 - 联合收割机车辆；
     * 0x04 - 集装箱车辆。
     * 0x05 - 0x50 预留为通行管理平台使用，其中:0x05-疫苗车；0x06-抢险救灾车；
     * 0x51 - 0xfe 预留；
     * 0xff - 默认
     */
    public String vehicleSign;
}
